package com.micro.modual.service;

import com.micro.core.frame.service.BasicsService;
import com.micro.core.resp.RespJson;
import com.micro.core.resp.RespJsonData;
import com.micro.modual.entity.SystemUser;
import com.micro.modual.model.bo.systemuser.BindRoleBO;
import com.micro.modual.model.bo.systemuser.ModifyUserStatusBO;
import com.micro.modual.model.bo.systemuser.SystemUserBO;
import com.micro.modual.model.dto.systemuserrole.UserRoleDTO;


/**
*  <h1>系统用户表 接口</h1>
 * @author LevelCoder
 * @version V1.0.0
 * @email LevelCoder@126.com
 * @date 2020-08-04 00:11:09
 */
public interface SystemUserService extends BasicsService<SystemUser,Long>{

    /**
     * <h2>新增系统用户表详情</h2>
     * @param systemUserBO {@link SystemUserBO} 系统用户表 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson addSystemUser(SystemUserBO systemUserBO);

    /**
     * <h2>根据主键编号删除系统用户表信息</h2>
     * @param id  系统用户表 主键编号
     * @return  {@link RespJson} 返回结果基础类
     */
    RespJson deleteSystemUser(Long id);

    /**
     * <h2>修改用户状态{包含批量}</h2>
     * @param modifyUserStatusBO  {@link ModifyUserStatusBO} 修改用户状态请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson modifyUserStatus(ModifyUserStatusBO modifyUserStatusBO);

    /**
     * <h2>校验邮箱</h2>
     * @param email 邮箱
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson validateEmailExist(String email);

    /**
     * <h2>校验手机号是否存在</h2>
     * @param phone 手机号
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson validataPhoneExist(String phone);


    /**
     * <h2>校验用户名是否存在</h2>
     * @param loginName   用户名/登录名
     * @return {@link RespJson} 返回对象
     */
    RespJson validataLoginName(String loginName);

    /**
     * <h2>用户角色相关:用户角色查看</h2>
     * @return {@link UserRoleDTO} 用户角色关联表
     */
    RespJsonData<UserRoleDTO> findUserRole(Long userId);

    /**
     * <h2>用户绑定角色</h2>
     * @param bindRoleBO {@link BindRoleBO}  用户绑定角色请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson bindRole(BindRoleBO bindRoleBO);

}
